package com.geng.demo.domain.pojo.hdata;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.sql.Timestamp;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@TableName("H_Lodge")
public class HLodge  implements Cloneable{

    /**
     * 单号
     */
    @TableId(value = "billno", type = IdType.INPUT)
    private String billno;

    /**
     * 姓名
     */
    private String guest;

    /**
     * 卡片生效时间  数据表
     */
    private Timestamp intime;

    /**
     * 卡片有效期  数据表
     */
    private Timestamp outtime;

    /**
     * 备注字段 实际填写智慧园区的房客唯一标识
     */
    private String remark;

    /**
     * 房间位置标识  关联HRoom表
     */
    private String roomaddr;

    /**
     * 地址信息，实际存储的内容是“企微已通知”
     */
    private String address;

    /**
     * 房间号  关联HRoom表
     */
    @TableField(exist = false)
    private String roomname;

    /**
     * 卡片生效时间  自定义
     */
    @TableField(exist = false)
    private LocalDateTime intimeLocal;

    /**
     * 卡片有效期  自定义
     */
    @TableField(exist = false)
    private LocalDateTime outtimeLocal;

    /**
     * 将 Timestamp 类型的 intime 和 outtime 转换为 LocalDateTime 类型
     */
    public void convertParam() {
        if (this.intime != null) {
            this.intimeLocal = this.intime.toLocalDateTime();
        }
        if (this.outtime != null) {
            this.outtimeLocal = this.outtime.toLocalDateTime();
        }
    }

    @Override
    public HLodge clone() throws CloneNotSupportedException {
        HLodge clone = (HLodge) super.clone();
        // 深拷贝 Timestamp 类型字段
        if (this.intime != null) {
            clone.intime = (Timestamp) this.intime.clone();
        }
        if (this.outtime != null) {
            clone.outtime = (Timestamp) this.outtime.clone();
        }
        return clone;
    }

}
